#ifndef ALLOCATION_H_INCLUDED
#define ALLOCATION_H_INCLUDED

int *alloc1Dint(int m)

{

    int *a;

    a=(int*)calloc(m,sizeof(int));

   return a;

}



// int 2-D array declaration



int **alloc2Dint(int m,int n)

{

    int **a, i;

    a=(int**)calloc(m,sizeof(int*));

    for(i=0;i<m;i++)

    {

                    a[i]=(int*)calloc(n,sizeof(int));

    }

   return a;

}

// int 3-D array declaration



int ***alloc3Dint(int m,int n, int k)

{

    int ***a, i,j;

    a=(int***)calloc(m,sizeof(int**));

    for(i=0;i<m;i++)

    {

                    a[i]=(int**)calloc(n,sizeof(int*));

    }

    for(i=0;i<m;i++)

	{

		for(j=0;j<n;j++)

		{

			a[i][j]=(int*)calloc(k,sizeof(int));

		}

	}

   return a;

}



// float 1-D array declaration



float * alloc1Dfloat(int m)

{

    float *a;

    a=(float*)calloc(m,sizeof(float));

   return a;

}



// float 2-D array declaration



float **alloc2Dfloat(int m,int n)

{

    float **a;

    int i;

    a=(float**)calloc(m,sizeof(float*));

    for(i=0;i<m;i++)

    {

                    a[i]=(float*)calloc(n,sizeof(float));

    }

   return a;

}
// 3d float

float ***alloc3Dfloat(int m,int n, int k)
{
    float ***a;
    int i,j;
    a=(float***)calloc(m,sizeof(float**));
    for(i=0;i<m;i++)
    {
                    a[i]=(float**)calloc(n,sizeof(float*));
    }
    for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			a[i][j]=(float*)calloc(k,sizeof(float));
		}
	}
   return a;
}

// char 1-D array declaration



char * alloc1Dchar(int m)

{

    char *a;

    a=(char*)calloc(m,sizeof(char));

   return a;

}



// char 2-D array declaration



char **alloc2Dchar(int m,int n)

{

    char **a;

    int i;

    a=(char**)calloc(m,sizeof(char*));

    for(i=0;i<m;i++)

    {

                    a[i]=(char*)calloc(n,sizeof(char));

    }

   return a;

}



int *realloc1Dint(int *data, int m)

{



                        data=(int*)realloc(data, m*sizeof(int));



 return data;

}



int **realloc2Dint(int **data, int m,int n, int last_indx)

{

    int i;







                   data=(int**)realloc(data,m*sizeof(int*));



                   for(i=last_indx;i<m;i++)

                   {

                     data[i]=NULL;

                     data[i]=(int*)malloc(n*sizeof(int));

                    }



  return data;

}

float **realloc2Dfloat(float **data, int m,int n, int last_indx)

{

    int i;







                   data=(float**)realloc(data,m*sizeof(float*));



                   for(i=last_indx;i<m;i++)

                   {

                    data[i]=NULL;

                     data[i]=(float*)malloc(n*sizeof(float));

                    }



  return data;

}
void free2Dfloat(float **mat , int n)
{
   int row;
	for(row=0;row<n;row++)
	{
		free(mat[row]);
	}
	free(mat);	
}
void free2Dint(int **mat , int n)
{
   int row;
	for(row=0;row<n;row++)
	{
		free(mat[row]);
	}
	free(mat);	
}

#else

#endif

